﻿using System;
using System.Text;
using System.Drawing;
using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public static partial class glDRIVE
{
    /*
    函数 gl.mtml
    计算多重积分的Monte_Carlo法
    f计算被积函数值f(X)的函数名。
    参数 n: 积分重数。
    参数 a: a[n]各层积分的下限。
    参数 b: b[n]各层积分的上限。
    返回值 函数返回积分值。
    */

    public static unsafe string drive_mtml()
    {
        double[] a = new double[3] { 1.0, 1.0, 1.0 };
        double[] b = new double[3] { 2.0, 2.0, 2.0 };

        gl.f_xa_n = mtmlf;
        string rs = "";
        rs += gl.html_table("各层积分的下限:", a);
        rs += gl.html_table("各层积分的上限:", b);
        rs += gl.html_table("计算多重积分的Monte_Carlo法:", new double[1] { gl.mtml(3, a, b) });
        return rs;
    }

    // 计算被积函数值
    private static unsafe double mtmlf(double* x, int n)
    {
        int i;
        double f;
        f = 0.0;
        for (i = 0; i <= n - 1; i++)
        {
            f = f + x[i] * x[i];
        }
        return (f);
    }
}